package com.aggregate.pay.transfar.bean;

import java.math.BigDecimal;

import com.aggregate.pay.transfar.enums.BankAccountType;
import com.aggregate.pay.transfar.enums.BankCardType;
import com.aggregate.pay.transfar.jackson.converter.BankAccountTypeSerialize;
import com.aggregate.pay.transfar.jackson.converter.BankCardTypeSerialize;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

/**
 * 商户代付到银行卡API-请求参数
 * @author Moyq5
 * @date 2018年10月23日
 */
public class Pay2BankData extends AbstractData {

	/**
	 * 必填，业务流水号。商户端的流水号，需保证在商户端不重复
	 */
	@JsonProperty("businessnumber")
	private String cusOrderNo;
	/**
	 * 必填，商品名称
	 */
	@JsonProperty("subject")
	private String goodsName;
	/**
	 * 必填，交易金额，单位：元
	 */
	@JsonProperty("transactionamount")
	private BigDecimal amount;
	/**
	 * 必填，银行卡号码
	 */
	@JsonProperty("bankcardnumber")
	private String bankCardNo;
	/**
	 * 必填，银行卡姓名
	 */
	@JsonProperty("bankcardname")
	private String bankCardName;
	/**
	 * 必填，银行名称
	 */
	@JsonProperty("bankname")
	private String bankName;
	/**
	 * 必填，银行卡类型
	 */
	@JsonProperty("bankcardtype")
	@JsonSerialize(converter = BankCardTypeSerialize.class)
	private BankCardType bankCardType;
	/**
	 * 必填，银行卡借贷类型
	 */
	@JsonProperty("bankaccounttype")
	@JsonSerialize(converter = BankAccountTypeSerialize.class)
	private BankAccountType bankAccountType;
	/**
	 * 省份(银行卡类型为企业时必填，个人选填)
	 */
	@JsonProperty("province")
	private String province;
	/**
	 * 城市(银行卡类型为企业时必填，个人选填)
	 */
	@JsonProperty("city")
	private String city;
	/**
	 * 银行支行名称(银行卡类型为企业时必填，个人选填)
	 */
	@JsonProperty("branchbankname")
	private String branchName;
	/**
	 * 银行联行号(选填，银行卡类型为企业时填写可提高处理效率)
	 */
	@JsonProperty("banknumber")
	private String branchNo;
	/**
	 * 支付通知地址
	 */
	@JsonProperty("backurl")
	private String notifyUrl;
	/**
	 * 必填，会员支付账户
	 */
	@JsonProperty("fromaccountnumber")
	private String accountNo;
	/**
	 * 成功后收到平台发送成功的短信信息(号码错误不发送)
	 */
	@JsonProperty("mobilenumber")
	private String mobile;
	
	public Pay2BankData() {
		setServiceId("tf56enterprise.enterprise.payForCustomer");
	}

	public String getCusOrderNo() {
		return cusOrderNo;
	}
	public void setCusOrderNo(String cusOrderNo) {
		this.cusOrderNo = cusOrderNo;
	}
	public String getGoodsName() {
		return goodsName;
	}
	public void setGoodsName(String goodsName) {
		this.goodsName = goodsName;
	}
	public BigDecimal getAmount() {
		return amount;
	}
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}
	public String getBankCardNo() {
		return bankCardNo;
	}
	public void setBankCardNo(String bankCardNo) {
		this.bankCardNo = bankCardNo;
	}
	public String getBankCardName() {
		return bankCardName;
	}
	public void setBankCardName(String bankCardName) {
		this.bankCardName = bankCardName;
	}
	public String getBankName() {
		return bankName;
	}
	public void setBankName(String bankName) {
		this.bankName = bankName;
	}
	public BankCardType getBankCardType() {
		return bankCardType;
	}
	public void setBankCardType(BankCardType bankCardType) {
		this.bankCardType = bankCardType;
	}
	public BankAccountType getBankAccountType() {
		return bankAccountType;
	}
	public void setBankAccountType(BankAccountType bankAccountType) {
		this.bankAccountType = bankAccountType;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getBranchName() {
		return branchName;
	}
	public void setBranchName(String branchName) {
		this.branchName = branchName;
	}
	public String getBranchNo() {
		return branchNo;
	}
	public void setBranchNo(String branchNo) {
		this.branchNo = branchNo;
	}
	public String getNotifyUrl() {
		return notifyUrl;
	}
	public void setNotifyUrl(String notifyUrl) {
		this.notifyUrl = notifyUrl;
	}
	public String getAccountNo() {
		return accountNo;
	}
	public void setAccountNo(String accountNo) {
		this.accountNo = accountNo;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
}
